A typical centralized peer-to-peer (P2P) storage system involves a central server and a large number of user machines (peers). Such a system allows users to store/retrieve data from the other peers. While the central server stores all location information of user data and is responsible for routing decisions, most all of the data operations are handled by corresponding peers in a manner where the server does not store or receive any of the corresponded data. For example, a peer may wish to store data remotely. In this example, the peer can split a file into smaller data files, contact the server for facilitating routing decisions and then route the smaller data files to multiple peers (e.g., file 1 to peer 1, file 2 to peer 2, etc.).
While some P2P storage systems do not require any security features, some P2P applications may require a security mechanism to ensure that peers follow imposed protocols. For example, where an application provides for sharing copyrighted files, a server may impose a protocol that restricts distribution, remote storage and corruption of the files.
In a P2P system, it is normally assumed that a majority of the peers is honest and not adversarial. Further, it is unlikely that a large number of peers would mount a coordinated attack against the P2P system. However, on the other hand, malicious network requests are easy to mount.
In a malicious network attack, an adversary normally has access to the communication protocol of the system or at least relevant parts of the protocol. In such a situation, an adversary can make illegitimate network requests, for example, an adversary may send malicious requests on behalf of other peers or on behalf of the server.
In another situation, an adversary may launch an attack that aims to change code on one or more peer machines. While a P2P system may obfuscate binaries deployed to peer machines, it is feasible for someone not only to reverse-engineer such aspects of a P2P system but also to implement his own variant of a peer. For example, an adversary can change code on a peer machine by patching an original binary to disable or modify its functionality or by implementing its own peer.
Some examples of attacks are illegitimate use other peer or server machine resources, access to other user's data (e.g., whether for purposes of gaining information or corruption), receiving GADs without providing storage, DOS attacks on the server, and self-distributing worms.
As described herein, various exemplary techniques provide for security measures in a P2P system that can confound adversarial attacks and promote confidence in peer-to-peer transactions.